package com.Maykk.Demo01;

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * @ClassName: Demo07
 * @Description: TODO 反射实现读取配置文件
 * @Author: MaykkStar@163.com
 */
public class Demo07 {
    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("./myconf.ini");
        Properties prop = new Properties();
        // 读取配置文件
        prop.load(fr);
        // 从配置文件获取 className 类名
        String className = prop.getProperty("className");
        // 从配置文件获取 methodName 方法名
        String methodName = prop.getProperty("methodName");
        // 输出测试
        // System.out.println(className + ", " + methodName);
        // 通过字符串类名方式获取 class 对象
        Class<?> C = Class.forName("com.Maykk.Demo01." + className);
        // 获取构造方法 （无参）
        Constructor<?> con = C.getConstructor();
        // 实例化对象
        Object o = con.newInstance();
        // 测试输出此时实例化的对象
        // System.out.println(o);
        // 通过字符串获取要执行的成员方法
        Method method = C.getMethod(methodName);
        // 调用方法
        method.invoke(o);
    }
}
